package com.rede.didiok.user.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.rede.didiok.common.dto.user.SignInRecordDto;
import com.rede.didiok.user.entity.SignInRecordEntity;

/**
 * 用户签到表
 *
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-08-07 18:21:17
 */
public interface SignInRecordService extends IService<SignInRecordEntity> {

    /***************************** admin:start **************************/
    // region  didiok-admin

    // endregion
    /***************************** admin:end **************************/



    /***************************** web:start **************************/
    // region didiok-web

    /**
     * 用户签到
     *
     * @param userUid 用户Uid
     * @return
     */
    String userSignIn(String userUid);

    /**
     * 补签
     *
     * @param signInVO
     * @return
     */
    String retroactive(SignInRecordDto signInVO);

    /**
     * 用户当月签到信息
     *
     * @param refresh
     * @param dateStr
     * @return
     */
    String signDataByUserUid(Boolean refresh, String dateStr);
    // endregion
    /***************************** web:end **************************/

    /**
     * 签到 并返回签到后连续的时间段
     *
     * @param userUid
     * @param retroactiveDate
     * @return
     */
    Integer retroactive(String userUid, List<String> retroactiveDate);

    /**
     * 根据用户uid查询用户当月签到情况
     *
     * @param userUid   用户Uid
     * @param hasSignIn 已签
     * @param dateKey
     * @return
     */
    List<SignInRecordDto> userSignRecordList(String userUid, Boolean hasSignIn, String dateKey);

    /**
     * 获取连续签到次数
     *
     * @param userUid
     * @return
     */
    Integer getSignInCount(String userUid);


    /**
     * 获取用户累积签到数
     *
     * @param userUid
     * @return
     */
    Integer getSignInSumCount(String userUid);


}

